

type NavigatorMap = 'wx' | 'zfb' | 'dd' | 'e-dd' | 'wxwork' | 'miniapp'
// 判断当前运行环境
export const getWebBrowser = (nav : NavigatorMap) : boolean => {
	
	// #ifdef H5
	const u = navigator.userAgent.toLowerCase()
	switch (nav) {
		case 'wx':
			//微信
			return new RegExp(/micromessenger/, 'i').test(u)
		case 'wxwork':
			//企业微信
			return new RegExp(/micromessenger/, 'i').test(u) && new RegExp(/wxwork/, 'i').test(u)
		case 'miniapp':
			// 微信小程序
			return (window as any)?.__wxjs_environment == "miniprogram"
		case 'zfb':
			// 支付宝
			return new RegExp(/alipay/, 'i').test(u)
		case 'e-dd':
			// 专有钉钉
			return new RegExp(/taurusapp/, 'i').test(u)
		case 'dd':
			// 钉钉
			return new RegExp(/dingtalk/, 'i').test(u)
		default:
			return false
	}
	// #endif
}

// #ifdef H5
// input自带的select()方法在苹果端无法进行选择，所以需要自己去写一个类似的方法
// 选择文本。createTextRange(setSelectionRange)是input方法
function selectText(textbox: any, startIndex: number, stopIndex: number) {
	if (textbox.createTextRange) {
		//ie
		const range = textbox.createTextRange();
		range.collapse(true);
		range.moveStart("character", startIndex); //起始光标
		range.moveEnd("character", stopIndex - startIndex); //结束光标
		range.select(); //不兼容苹果
	} else {
		//firefox/chrome
		textbox.setSelectionRange(startIndex, stopIndex);
		textbox.focus();
	}
}
// #endif

export const copy = (content: string,
	backCall: () => void) => {
	uni.setClipboardData({
		data: content,
		showToast:false,
		success: () => {
			backCall()
		},
		fail:() => {
			// #ifdef H5
			// 数字没有 .length 不能执行selectText 需要转化成字符串
			const textString = content.toString();
			let input = document.querySelector("#copy-input");
			if (!input) {
				input = document.createElement("input");
				input.id = "copy-input";
				input.readOnly = "readOnly"; // 防止ios聚焦触发键盘事件
				input.style.position = "fixed";
				input.style.left = "-1000px";
				input.style.zIndex = "-1000";
				document.body.appendChild(input);
			}
			input.value = textString;
			// ios必须先选中文字且不支持 input.select();
			selectText(input, 0, textString.length);
			// console.log(document.execCommand('copy'), 'execCommand');
			if (document.execCommand("copy")) {
				document.execCommand("copy");
				backCall()
			}
			input.blur();
			
			// #endif
		}
	});

}